package com.hsc.mvc.bind;

import com.hsc.mvc.DefaultParameterSource;
import com.hsc.mvc.ParameterSource;

import java.lang.reflect.Parameter;

/**
 * @author
 * @date 2025-05-26
 * @Description 参数绑定器
 */
public interface ParameterBindStrategy {
    /**
     * 从paramSource中获得parameter这个参数所需要的参数值,目前还有3种<br/>
     *      *  1. 1:1 请求参数 <br/>
     *      *  2. 1:n 请求参数 <br/>
     *      *  3. servlet相关对象参数 <br/>
     * @param parameter
     * @param parameterSource
     * @return
     */
    Object bind(Parameter parameter, ParameterSource parameterSource) throws Exception;

    /**
     *      * 判断当前这个绑定器是否只支持当前这个参数<br/>
     *      * 使用这个绑定策略，能否为当前参数找到对应的参数值
     * @param parameter
     * @return
     */
    boolean isSupport(Parameter parameter);
}
